﻿////////////////////////////////////////////////////
//
//  ゲーム用に作成したキーボードクラス
//  作成日：2012/11/19
//  作成者：岩井賢司
//  履歴：2012/11/19　初版作成（岩井）
//
////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;

namespace Particle_Tackle
{
    /// <summary>
    /// トリガーとリリースを追加したキーボードクラス
    /// </summary>
    static class CustomKeyboard
    {
        #region Fields::変数宣言
        /// <summary>
        /// 現在のキーボードの状態
        /// </summary>
        private static KeyboardState CurrentKeybord;

        /// <summary>
        /// 前回のキーボードの状態
        /// </summary>
        private static KeyboardState LastKeybord;
        #endregion

        #region Init::初期化
        /// <summary>
        /// 初期化
        /// </summary>
        public static void Init()
        {
            CurrentKeybord = Keyboard.GetState(PlayerIndex.One);
            LastKeybord = Keyboard.GetState(PlayerIndex.One);
        }
        #endregion

        #region Update::更新
        /// <summary>
        /// 更新処理
        /// </summary>
        public static void Update()
        {
            LastKeybord = CurrentKeybord;
            CurrentKeybord = Keyboard.GetState(PlayerIndex.One);
        }
        #endregion

        #region getPress::キーボードの押下状態を取得する
        /// <summary>
        /// キーボードの押下状態を取得するメソッド
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static bool getPress(Keys key)
        {
            return CurrentKeybord.IsKeyDown(key);
        }
        #endregion

        #region getTrigger::キーボードを押した瞬間を取得する
        /// <summary>
        /// キーボードを押した瞬間を取得するメソッド
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static bool getTrigger(Keys key)
        {
            if (CurrentKeybord.IsKeyDown(key) == LastKeybord.IsKeyUp(key))
            {
                return CurrentKeybord.IsKeyDown(key);
            }
            return false;
        }
        #endregion

        #region getRelease::キーボードを離した瞬間を取得する
        /// <summary>
        /// キーボードを離した瞬間を取得するメソッド
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        public static bool getRelease(Keys key)
        {
            if (CurrentKeybord.IsKeyUp(key) == LastKeybord.IsKeyDown(key))
            {
                return CurrentKeybord.IsKeyUp(key);
            }
            return false;
        }
        #endregion
    }
}
